package edu.ustb.mis.dm.model.unit.interfaces;

import java.util.List;
import edu.ustb.mis.dm.model.attributes.interfaces.Attributes;

/**
 * 被用来作为数据单元处理的模型基础接口，比如数据实例，或者聚类结果等等。
 * 
 * @author saya 2011-5-24
 */
public interface ClusterCategory<T extends Attributes<?, ?>> extends Item<T> {
	List<String> getNameList();

	void setNameList(List<String> nameList);

	void setDissimilarity(double dissimilarity);

	double getDissimilarity();

	void setAllAttributes(T allAttributes);

	T getAllAttributes();

	void add(final String name, final T attributes, final double dissimilarity);

	void add(final List<String> nameList, final ClusterCategory<T> result, final double dissimilarity);

	void addOne(String name);

	void clear();

	void contrast(T attributes);

	void contrast(ClusterCategory<T> result);

	double differenceSize();

	int effectiveSize();

	void or(T allAttributes);

	int nextLength();

	int nextLength(ClusterCategory<T> result);

	int length();

	void and(T attributes);
}
